package com.fujifilm.project.plan.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;

import jakarta.annotation.Nullable;
import lombok.Data;

/**
 * 项目组实体类
 *
 * @date 2025年6月13日
 * @time 15:30:00
 * @description 项目组管理实体
 *
 */
@Data
@Table("project_group") // 数据库表名
public class ProjectGroup implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     *
     * <pre>
     * 项目组ID
     * </pre>
     */
    @Id(keyType = KeyType.Auto)
    @Column("id")
    private Long id;

    /**
     *
     * <pre>
     * 项目组名称
     * </pre>
     */
    @Column("group_name")
    private String groupName;

    /**
     *
     * <pre>
     * 项目组编码
     * </pre>
     */
    @Column("group_code")
    private String groupCode;

    /**
     *
     * <pre>
     * 所属上级组织
     * </pre>
     */
    @Column(value = "belong_to_group")
    @Nullable
    private String belongToGroup;

    /**
     *
     * <pre>
     * 所属客户
     * </pre>
     */
    @Column(value = "belong_to_customer")
    @Nullable
    private String belongToCustomer;

    /**
     *
     * <pre>
     * 归属部门
     * </pre>
     */
    @Column(value = "general_department")
    @Nullable
    private String generalDepartment;

    /**
     *
     * <pre>
     * 具体部门
     * </pre>
     */
    @Column(value = "department")
    @Nullable
    private String department;

    /**
     *
     * <pre>
     * 项目类别
     * </pre>
     */
    @Column(value = "category")
    @Nullable
    private String category;

    /**
     *
     * <pre>
     * 状态(0 - 不启用, 1 - 启用)
     * </pre>
     */
    @Column(value = "status")
    private Integer status;

    /**
     *
     * <pre>
     * 负责人ID
     * </pre>
     */
    @Column(value = "leader_id")
    @Nullable
    private Long leaderId;

    /**
     *
     * <pre>
     * 负责人姓名
     * </pre>
     */
    @Column(value = "leader_name")
    @Nullable
    private String leaderName;

    /**
     *
     * <pre>
     * 成员数量
     * </pre>
     */
    @Column(value = "member_count")
    private Integer memberCount;

    /**
     *
     * <pre>
     * 项目组描述
     * </pre>
     */
    @Column(value = "description")
    @Nullable
    private String description;

    /**
     *
     * <pre>
     * 开始日期
     * </pre>
     */
    @Column(value = "start_date")
    @Nullable
    private LocalDate startDate;

    /**
     *
     * <pre>
     * 结束日期
     * </pre>
     */
    @Column(value = "end_date")
    @Nullable
    private LocalDate endDate;

    /**
     *
     * <pre>
     * 预算
     * </pre>
     */
    @Column(value = "budget")
    @Nullable
    private BigDecimal budget;

    /**
     *
     * <pre>
     * 创建人ID
     * </pre>
     */
    @Column(value = "create_user_id")
    @Nullable
    private Long createUserId;

    /**
     *
     * <pre>
     * 创建时间
     * </pre>
     */
    @Column(value = "create_time")
    @Nullable
    private LocalDateTime createTime;

    /**
     *
     * <pre>
     * 更新人ID
     * </pre>
     */
    @Column(value = "update_user_id")
    @Nullable
    private Long updateUserId;

    /**
     *
     * <pre>
     * 更新时间
     * </pre>
     */
    @Column(value = "update_time")
    @Nullable
    private LocalDateTime updateTime;

    /**
     *
     * <pre>
     * 是否删除(0-未删除 1-已删除)
     * </pre>
     */
    @Column(value = "is_deleted")
    private Integer isDeleted;
}
